Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Initial Update #1

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open

Initial Update #1

wants to merge 7 commits into from

Conversation

pyup-bot
Copy link

This is my first visit to this fine repo so I have bundled all updates in a single pull request to make things easier for you to merge.

Close this pull request and delete the branch if you want me to start with single pull requests right away

Here's the executive summary:

Updates

Here's a list of all the updates bundled in this pull request. I've added some links to make it easier for you to find all the information you need.

attrs 15.1.0 » 17.2.0 PyPI | Changelog | Homepage
typing 3.5.0 » 3.6.2 PyPI | Homepage
wheel 0.23.0 » 0.30.0 PyPI | Changelog | Repo
flake8 2.4.1 » 3.4.1 PyPI | Changelog | Repo
tox 2.1.1 » 2.9.1 PyPI | Changelog | Docs
coverage 4.0 » 4.4.1 PyPI | Changelog | Docs
Sphinx 1.3.1 » 1.6.4 PyPI | Changelog | Homepage

Changelogs

attrs 15.1.0 -> 17.2.0

17.2.0


Backward-incompatible changes:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

none

Deprecations:
^^^^^^^^^^^^^

none

Changes:
^^^^^^^^

  • Validators are hashable again.
    Note that validators may become frozen in the future, pending availability of no-overhead frozen classes.
    192 <https://github.com/python-attrs/attrs/issues/192>_

17.1.0


To encourage more participation, the project has also been moved into a dedicated GitHub organization <https://github.com/python-attrs/>_ and everyone is most welcome to join!

attrs also has a logo now!

.. image:: http://www.attrs.org/en/latest/_static/attrs_logo.png
:alt: attrs logo

Backward-incompatible changes:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  • attrs will set the __hash__() method to None by default now.
    The way hashes were handled before was in conflict with Python's specification <https://docs.python.org/3/reference/datamodel.htmlobject.__hash__>.
    This may break some software although this breakage is most likely just surfacing of latent bugs.
    You can always make attrs create the __hash__() method using attr.s(hash=True).
    See 136
    for the rationale of this change.

.. warning::

Please do not upgrade blindly and do test your software!
Especially if you use instances as dict keys or put them into sets!

  • Correspondingly, attr.ib's hash argument is None by default too and mirrors the cmp argument as it should.

Deprecations:
^^^^^^^^^^^^^

  • attr.assoc() is now deprecated in favor of attr.evolve() and will stop working in 2018.

Changes:
^^^^^^^^

  • Fix default hashing behavior.
    Now hash mirrors the value of cmp and classes are unhashable by default.
    136_
    142 <https://github.com/python-attrs/attrs/issues/142>_
  • Added attr.evolve() that, given an instance of an attrs class and field changes as keyword arguments, will instantiate a copy of the given instance with the changes applied.
    evolve() replaces assoc(), which is now deprecated.
    evolve() is significantly faster than assoc(), and requires the class have an initializer that can take the field values as keyword arguments (like attrs itself can generate).
    116 <https://github.com/python-attrs/attrs/issues/116>_
    124 <https://github.com/python-attrs/attrs/pull/124>_
    135 <https://github.com/python-attrs/attrs/pull/135>_
  • FrozenInstanceError is now raised when trying to delete an attribute from a frozen class.
    118 <https://github.com/python-attrs/attrs/pull/118>_
  • Frozen-ness of classes is now inherited.
    128 <https://github.com/python-attrs/attrs/pull/128>_
  • __attrs_post_init__() is now run if validation is disabled.
    130 <https://github.com/python-attrs/attrs/pull/130>_
  • Added attr.validators.in_(options) that, given the allowed options, checks whether the attribute value is in it.
    This can be used to check constants, enums, mappings, etc.
    181 <https://github.com/python-attrs/attrs/pull/181>_
  • Added attr.validators.and_() that composes multiple validators into one.
    161 <https://github.com/python-attrs/attrs/issues/161>_
  • For convenience, the validator argument of attr.s now can take a list of validators that are wrapped using and_().
    138 <https://github.com/python-attrs/attrs/issues/138>_
  • Accordingly, attr.validators.optional() now can take a list of validators too.
    161 <https://github.com/python-attrs/attrs/issues/161>_
  • Validators can now be defined conveniently inline by using the attribute as a decorator.
    Check out the examples <http://www.attrs.org/en/stable/examples.htmlvalidators>_ to see it in action!
    143 <https://github.com/python-attrs/attrs/issues/143>_
  • attr.Factory() now has a takes_self argument that makes the initializer to pass the partially initialized instance into the factory.
    In other words you can define attribute defaults based on other attributes.
    165_
    189 <https://github.com/python-attrs/attrs/issues/189>_
  • Default factories can now also be defined inline using decorators.
    They are always passed the partially initialized instance.
    165_
  • Conversion can now be made optional using attr.converters.optional().
    105 <https://github.com/python-attrs/attrs/issues/105>_
    173 <https://github.com/python-attrs/attrs/pull/173>_
  • attr.make_class() now accepts the keyword argument bases which allows for subclassing.
    152 <https://github.com/python-attrs/attrs/pull/152>_
  • Metaclasses are now preserved with slots=True.
    155 <https://github.com/python-attrs/attrs/pull/155>_

.. _136: python-attrs/attrs#136
.. _165: python-attrs/attrs#165


16.3.0


Changes:
^^^^^^^^

  • Attributes now can have user-defined metadata which greatly improves attrs's extensibility.
    96 <https://github.com/python-attrs/attrs/pull/96>_
  • Allow for a __attrs_post_init__() method that -- if defined -- will get called at the end of the attrs-generated __init__() method.
    111 <https://github.com/python-attrs/attrs/pull/111>_
  • Added attr.s(str=True) that will optionally create a __str__() method that is identical to __repr__().
    This is mainly useful with Exception\ s and other classes that rely on a useful __str__() implementation but overwrite the default one through a poor own one.
    Default Python class behavior is to use __repr__() as __str__() anyways.

If you tried using attrs with Exception\ s and were puzzled by the tracebacks: this option is for you.

  • __name__ is not overwritten with __qualname__ for attr.s(slots=True) classes anymore.
    99 <https://github.com/python-attrs/attrs/issues/99>_

16.2.0


Changes:
^^^^^^^^

  • Added attr.astuple() that -- similarly to attr.asdict() -- returns the instance as a tuple.
    77 <https://github.com/python-attrs/attrs/issues/77>_
  • Converts now work with frozen classes.
    76 <https://github.com/python-attrs/attrs/issues/76>_
  • Instantiation of attrs classes with converters is now significantly faster.
    80 <https://github.com/python-attrs/attrs/pull/80>_
  • Pickling now works with __slots__ classes.
    81 <https://github.com/python-attrs/attrs/issues/81>_
  • attr.assoc() now works with __slots__ classes.
    84 <https://github.com/python-attrs/attrs/issues/84>_
  • The tuple returned by attr.fields() now also allows to access the Attribute instances by name.
    Yes, we've subclassed tuple so you don't have to!
    Therefore attr.fields(C).x is equivalent to the deprecated C.x and works with __slots__ classes.
    88 <https://github.com/python-attrs/attrs/issues/88>_

16.1.0


Backward-incompatible changes:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  • All instances where function arguments were called cl have been changed to the more Pythonic cls.
    Since it was always the first argument, it's doubtful anyone ever called those function with in the keyword form.
    If so, sorry for any breakage but there's no practical deprecation path to solve this ugly wart.

Deprecations:
^^^^^^^^^^^^^

  • Accessing Attribute instances on class objects is now deprecated and will stop working in 2017.
    If you need introspection please use the __attrs_attrs__ attribute or the attr.fields() function that carry them too.
    In the future, the attributes that are defined on the class body and are usually overwritten in your __init__ method are simply removed after attr.s has been applied.

This will remove the confusing error message if you write your own __init__ and forget to initialize some attribute.
Instead you will get a straightforward AttributeError.
In other words: decorated classes will work more like plain Python classes which was always attrs's goal.

  • The serious business aliases attr.attributes and attr.attr have been deprecated in favor of attr.attrs and attr.attrib which are much more consistent and frankly obvious in hindsight.
    They will be purged from documentation immediately but there are no plans to actually remove them.

Changes:
^^^^^^^^

  • attr.asdict()\ 's dict_factory arguments is now propagated on recursion.
    45 <https://github.com/python-attrs/attrs/issues/45>_
  • attr.asdict(), attr.has() and attr.fields() are significantly faster.
    48 <https://github.com/python-attrs/attrs/issues/48>_
    51 <https://github.com/python-attrs/attrs/issues/51>_
  • Add attr.attrs and attr.attrib as a more consistent aliases for attr.s and attr.ib.
  • Add frozen option to attr.s that will make instances best-effort immutable.
    60 <https://github.com/python-attrs/attrs/issues/60>_
  • attr.asdict() now takes retain_collection_types as an argument.
    If True, it does not convert attributes of type tuple or set to list.
    69 <https://github.com/python-attrs/attrs/issues/69>_

16.0.0


Backward-incompatible changes:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  • Python 3.3 and 2.6 aren't supported anymore.
    They may work by chance but any effort to keep them working has ceased.

The last Python 2.6 release was on October 29, 2013 and isn't supported by the CPython core team anymore.
Major Python packages like Django and Twisted dropped Python 2.6 a while ago already.

Python 3.3 never had a significant user base and wasn't part of any distribution's LTS release.

Changes:
^^^^^^^^

  • __slots__ have arrived!
    Classes now can automatically be slots <https://docs.python.org/3.5/reference/datamodel.htmlslots>-style (and save your precious memory) just by passing slots=True.
    35 <https://github.com/python-attrs/attrs/issues/35>
  • Allow the case of initializing attributes that are set to init=False.
    This allows for clean initializer parameter lists while being able to initialize attributes to default values.
    32 <https://github.com/python-attrs/attrs/issues/32>_
  • attr.asdict() can now produce arbitrary mappings instead of Python dict\ s when provided with a dict_factory argument.
    40 <https://github.com/python-attrs/attrs/issues/40>_
  • Multiple performance improvements.

15.2.0


Changes:
^^^^^^^^

  • Added a convert argument to attr.ib, which allows specifying a function to run on arguments.
    This allows for simple type conversions, e.g. with attr.ib(convert=int).
    26 <https://github.com/python-attrs/attrs/issues/26>_
  • Speed up object creation when attribute validators are used.
    28 <https://github.com/python-attrs/attrs/issues/28>_

wheel 0.23.0 -> 0.30.0

0.30.0

======

  • Added py-limited-api {cp32|cp33|cp34|...} flag to produce cpNN.abi3.{arch}
    tags on CPython 3.
  • Documented the license_file metadata key
  • Improved Python, abi tagging for wheel convert. Thanks Ales Erjavec.
  • Fixed > being prepended to lines starting with "From" in the long description
  • Added support for specifying a build number (as per PEP 427).
    Thanks Ian Cordasco.
  • Made the order of files in generated ZIP files deterministic.
    Thanks Matthias Bach.
  • Made the order of requirements in metadata deterministic. Thanks Chris Lamb.
  • Fixed wheel install clobbering existing files
  • Improved the error message when trying to verify an unsigned wheel file
  • Removed support for Python 2.6, 3.2 and 3.3.

0.29.0

======

  • Fix compression type of files in archive (Issue 155, Pull Request 62,
    thanks Xavier Fernandez)

0.28.0

======

  • Fix file modes in archive (Issue 154)

0.27.0

======

  • Support forcing a platform tag using --plat-name on pure-Python wheels, as
    well as nonstandard platform tags on non-pure wheels (Pull Request 60, Issue
    144, thanks Andrés Díaz)
  • Add SOABI tags to platform-specific wheels built for Python 2.X (Pull Request
    55, Issue 63, Issue 101)
  • Support reproducible wheel files, wheels that can be rebuilt and will hash to
    the same values as previous builds (Pull Request 52, Issue 143, thanks
    Barry Warsaw)
  • Support for changes in keyring >= 8.0 (Pull Request 61, thanks Jason R.
    Coombs)
  • Use the file context manager when checking if dependency_links.txt is empty,
    fixes problems building wheels under PyPy on Windows (Issue 150, thanks
    Cosimo Lupo)
  • Don't attempt to (recursively) create a build directory ending with ..
    (invalid on all platforms, but code was only executed on Windows) (Issue 91)
  • Added the PyPA Code of Conduct (Pull Request 56)

0.26.0

======

  • Fix multiple entrypoint comparison failure on Python 3 (Issue 148)

0.25.0

======

  • Add Python 3.5 to tox configuration
  • Deterministic (sorted) metadata
  • Fix tagging for Python 3.5 compatibility
  • Support py2-none-'arch' and py3-none-'arch' tags
  • Treat data-only wheels as pure
  • Write to temporary file and rename when using wheel install --force

0.24.0

======

  • The python tag used for pure-python packages is now .pyN (major version
    only). This change actually occurred in 0.23.0 when the --python-tag
    option was added, but was not explicitly mentioned in the changelog then.
  • wininst2wheel and egg2wheel removed. Use "wheel convert [archive]"
    instead.
  • Wheel now supports setuptools style conditional requirements via the
    extras_require={} syntax. Separate 'extra' names from conditions using
    the : character. Wheel's own setup.py does this. (The empty-string
    extra is the same as install_requires.) These conditional requirements
    should work the same whether the package is installed by wheel or
    by setup.py.

flake8 2.4.1 -> 3.4.1

3.4.1


You can view the 3.4.1 milestone_ on GitLab for more details.

  • Fix minor regression when users specify only a --select list with items
    in the enabled/extended select list. (See also GitLab354_)

.. all links
.. _3.4.1 milestone:
https://gitlab.com/pycqa/flake8/milestones/19

.. issue links
.. _GitLab354:
https://gitlab.com/pycqa/flake8/issues/354

.. merge request links

3.4.0


You can view the 3.4.0 milestone_ on GitLab for more details.

  • Refine logic around --select and --ignore when combined with the
    default values for each. (See also GitLab318_)
  • Handle spaces as an alternate separate for error codes, e.g.,
    --ignore 'E123 E234'. (See also GitLab329_)
  • Filter out empty select and ignore codes, e.g., --ignore E123,,E234.
    (See also GitLab330_)
  • Specify dependencies appropriately in setup.py (See also Gitlab341_)
  • Fix bug in parsing --quiet and --verbose from config files.
    (See also GitLab!193_)
  • Remove unused import of os in the git hook template (See also
    GitLab!194_)

.. all links
.. _3.4.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/18

.. issue links
.. _GitLab318:
https://gitlab.com/pycqa/flake8/issues/318
.. _GitLab329:
https://gitlab.com/pycqa/flake8/issues/329
.. _GitLab330:
https://gitlab.com/pycqa/flake8/issues/330
.. _GitLab341:
https://gitlab.com/pycqa/flake8/issues/341

.. merge request links
.. _GitLab!193:
https://gitlab.com/pycqa/flake8/merge_requests/193
.. _GitLab!194:
https://gitlab.com/pycqa/flake8/merge_requests/194

3.3.0


You can view the 3.3.0 milestone_ on GitLab for more details.

  • Add support for Python 3.6 (via dependencies). Note Flake8 does not
    guarantee that all plugins will support Python 3.6.
  • Added unique error codes for all missing PyFlakes messages. (14 new
    codes, see "Error / Violation Codes")
  • Dramatically improve the performance of Flake8. (See also GitLab!156_)
  • Display the local file path instead of the temporary file path when
    using the git hook. (See also GitLab244_)
  • Add methods to Report class that will be called when Flake8 starts and
    finishes processing a file. (See also GitLab251_)
  • Fix problem where hooks should only check *.py files. (See also
    GitLab268_)
  • Fix handling of SyntaxErrors that do not include physical line information.
    (See also GitLab279_)
  • Update upper bound on PyFlakes to allow for PyFlakes 1.5.0. (See also
    GitLab290_)
  • Update setuptools integration to less eagerly deduplicate packages.
    (See also GitLab295_)
  • Force flake8 --version to be repeatable between invocations. (See also
    GitLab297_)

.. all links
.. _3.3.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/16

.. issue links
.. _GitLab244:
https://gitlab.com/pycqa/flake8/issues/244
.. _GitLab251:
https://gitlab.com/pycqa/flake8/issues/251
.. _GitLab268:
https://gitlab.com/pycqa/flake8/issues/268
.. _GitLab279:
https://gitlab.com/pycqa/flake8/issues/279
.. _GitLab290:
https://gitlab.com/pycqa/flake8/issues/290
.. _GitLab295:
https://gitlab.com/pycqa/flake8/issues/295
.. _GitLab297:
https://gitlab.com/pycqa/flake8/issues/297

.. merge request links
.. _GitLab!156:
https://gitlab.com/pycqa/flake8/merge_requests/156

3.2.1


You can view the 3.2.1 milestone_ on GitLab for more details.

  • Fix subtle bug when deciding whether to report an on-by-default's violation
    (See also GitLab257_)
  • Fix another bug around SyntaxErrors not being reported at the right column
    and row (See also GitLab259_ and GitLab237_ for a related, previously
    fixed bug)
  • Fix regression from 2.x where we run checks against explicitly provided
    files, even if they don't match the filename patterns. (See also
    GitLab266_)

.. links
.. _3.2.1 milestone:
https://gitlab.com/pycqa/flake8/milestones/15
.. _GitLab237:
https://gitlab.com/pycqa/flake8/issues/237
.. _GitLab257:
https://gitlab.com/pycqa/flake8/issues/257
.. _GitLab259:
https://gitlab.com/pycqa/flake8/issues/259
.. _GitLab266:
https://gitlab.com/pycqa/flake8/issues/266

3.2.0


You can view the 3.2.0 milestone_ on GitLab for more details.

  • Allow for pycodestyle 2.2.0 which fixes a bug in E305 (See also
    GitLab256_)

.. links
.. _3.2.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/14
.. _GitLab256:
https://gitlab.com/pycqa/flake8/issues/256

3.1.1


You can view the 3.1.1 milestone_ on GitLab for more details.

  • Do not attempt to install/distribute a man file with the Python package;
    leave this for others to do. (See also GitLab254_)
  • Fix packaging bug where wheel version constraints specified in setup.cfg did
    not match the constraints in setup.py. (See also GitLab255_)

.. links
.. _3.1.1 milestone:
https://gitlab.com/pycqa/flake8/milestones/13
.. _GitLab254:
https://gitlab.com/pycqa/flake8/issues/254
.. _GitLab255:
https://gitlab.com/pycqa/flake8/issues/255

3.1.0


You can view the 3.1.0 milestone_ on GitLab for more details.

  • Add --bug-report flag to make issue reporters' lives easier.
  • Collect configuration files from the current directory when using our Git
    hook. (See also GitLab210, GitLab218, GitLab223_)
  • Avoid unhandled exceptions when dealing with SyntaxErrors. (See also
    GitLab214, GitLab238)
  • Exit early if the value for --diff is empty. (See also GitLab226_)
  • Handle empty --stdin-display-name values. (See also GitLab235_)
  • Properly report the column number of Syntax Errors. We were assuming that
    all reports of column numbers were 0-indexed, however, SyntaxErrors report
    the column number as 1-indexed. This caused us to report a column number
    that was 1 past the actual position. Further, when combined with
    SyntaxErrors that occur at a newline, this caused the position to be
    visually off by two. (See also GitLab237_)
  • Fix the behaviour of --enable-extensions. Previously, items specified
    here were still ignored due to the fact that the off-by-default extension
    codes were being left in the ignore list. (See also GitLab239_)
  • Fix problems around --select and --ignore behaviour that prevented
    codes that were neither explicitly selected nor explicitly ignored from
    being reported. (See also GitLab242_)
  • Truly be quiet when the user specifies -q one or more times. Previously,
    we were showing the if the user specified -q and --show-source. We
    have fixed this bug. (See also GitLab245_)
  • Add new File Processor attribute, previous_unindented_logical_line to
    accommodate pycodestyle 2.1.0. (See also GitLab246_)
  • When something goes wrong, exit non-zero. (See also GitLab248,
    GitLab209
    )
  • Add --tee as an option to allow use of --output-file and printing to
    standard out.
  • Allow the git plugin to actually be lazy when collecting files.
  • Allow for pycodestyle 2.1 series and pyflakes 1.3 series.

.. links
.. _3.1.0 milestone:
https://gitlab.com/pycqa/flake8/milestones/12
.. _GitLab209:
https://gitlab.com/pycqa/flake8/issues/209
.. _GitLab210:
https://gitlab.com/pycqa/flake8/issues/210
.. _GitLab214:
https://gitlab.com/pycqa/flake8/issues/214
.. _GitLab218:
https://gitlab.com/pycqa/flake8/issues/218
.. _GitLab223:
https://gitlab.com/pycqa/flake8/issues/223
.. _GitLab226:
https://gitlab.com/pycqa/flake8/issues/226
.. _GitLab235:
https://gitlab.com/pycqa/flake8/issues/235
.. _GitLab237:
https://gitlab.com/pycqa/flake8/issues/237
.. _GitLab238:
https://gitlab.com/pycqa/flake8/issues/238
.. _GitLab239:
https://gitlab.com/pycqa/flake8/issues/239
.. _GitLab242:
https://gitlab.com/pycqa/flake8/issues/242
.. _GitLab245:
https://gitlab.com/pycqa/flake8/issues/245
.. _GitLab246:
https://gitlab.com/pycqa/flake8/issues/246
.. _GitLab248:
https://gitlab.com/pycqa/flake8/issues/248

3.0.4


  • Side-step a Pickling Error when using Flake8 with multiprocessing on Unix
    systems. (See also GitLab164_)
  • Fix an Attribute Error raised when dealing with Invalid Syntax. (See also
    GitLab203_)
  • Fix an unhandled Syntax Error when tokenizing files. (See also
    GitLab205_)

.. links
.. _GitLab164:
https://gitlab.com/pycqa/flake8/issues/164
.. _GitLab203:
https://gitlab.com/pycqa/flake8/issues/203
.. _GitLab205:
https://gitlab.com/pycqa/flake8/issues/205

3.0.3


  • Disable --jobs for any version of Python on Windows.
    (See also this Python bug report_)
  • Raise exception when entry_point in plugin not callable.
    This raises an informative error when a plugin fails to load because its
    entry_point is not callable, which can happen with a plugin which is buggy or
    not updated for the current version of flake8. This is nicer than raising a
    PicklingError about failing to pickle a module (See also GitLab164_)
  • Fix noqa comments followed by a : and explanation broken by
    3.0.0 (See also GitLab178_)
  • Always open our output file in append mode so we do not overwrite log
    messages. (See also GitLab193_)
  • When normalizing path values read from configuration, keep in context the
    directory where the configuration was found so that relative paths work.
    (See also GitLab194_)
  • Fix issue where users were unable to ignore plugin errors that were on
    by default. (See also GitLab195_)
  • Fix our legacy API StyleGuide's init_report method to actually override
    the previous formatter. (See also GitLab200_)

.. links
.. _GitLab164:
https://gitlab.com/pycqa/flake8/issues/164
.. _GitLab178:
https://gitlab.com/pycqa/flake8/issues/178
.. _GitLab193:
https://gitlab.com/pycqa/flake8/issues/193
.. _GitLab194:
https://gitlab.com/pycqa/flake8/issues/193
.. _GitLab195:
https://gitlab.com/pycqa/flake8/issues/195
.. _GitLab200:
https://gitlab.com/pycqa/flake8/issues/200
.. _this Python bug report:
https://bugs.python.org/issue27649

3.0.2


  • Fix local config file discovery. (See also GitLab181_)
  • Fix indexing of column numbers. We accidentally were starting column indices
    at 0 instead of 1.
  • Fix regression in handling of errors like E402 that rely on a combination of
    attributes. (See also GitLab186_)

.. links
.. _GitLab181:
https://gitlab.com/pycqa/flake8/issues/181
.. _GitLab186:
https://gitlab.com/pycqa/flake8/issues/186

3.0.1


  • Fix regression in handling of noqa for multiline strings.
    (See also GitLab177_)
  • Fix regression in handling of --output-file when not also using
    --verbose. (See also GitLab180_)
  • Fix regression in handling of --quiet. (See also GitLab180_)
  • Fix regression in handling of --statistics. (See also GitLab180_)

.. links
.. _GitLab177:
https://gitlab.com/pycqa/flake8/issues/177
.. _GitLab180:
https://gitlab.com/pycqa/flake8/issues/180

3.0.0


  • Drop explicit support for Pythons 2.6, 3.2, and 3.3.
  • Remove dependence on pep8/pycodestyle for file processing, plugin
    dispatching, and more. We now control all of this while keeping backwards
    compatibility.
  • --select and --ignore can now both be specified and try to find the
    most specific rule from each. For example, if you do --select E --ignore E123 then we will report everything that starts with E except for
    E123. Previously, you would have had to do --ignore E123,F,W which
    will also still work, but the former should be far more intuitive.
  • Add support for in-line noqa comments to specify only the error
    codes to be ignored, e.g., noqa: E123,W503
  • Add entry-point for formatters as well as a base class that new formatters
    can inherit from. See the documentation for more details.
  • Add detailed verbose output using the standard library logging module.
  • Enhance our usage of optparse for plugin developers by adding new parameters
    to the add_option that plugins use to register new options.
  • Update --install-hook to require the name of version control system hook
    you wish to install a Flake8.
  • Stop checking sub-directories more than once via the setuptools command
  • When passing a file on standard-in, allow the caller to specify
    --stdin-display-name so the output is properly formatted
  • The Git hook now uses sys.executable to format the shebang line.
    This allows Flake8 to install a hook script from a virtualenv that points to
    that virtualenv's Flake8 as opposed to a global one (without the virtualenv
    being sourced).
  • Print results in a deterministic and consistent ordering when used with
    multiprocessing
  • When using --count, the output is no longer written to stderr.
  • AST plugins can either be functions or classes and all plugins can now
    register options so long as there are callable attributes named as we
    expect.
  • Stop forcibly re-adding .tox, .eggs, and *.eggs to
    --exclude. Flake8 2.x started always appending those three patterns
    to any exclude list (including the default and any user supplied list).
    Flake8 3 has stopped adding these in, so you may see errors when upgrading
    due to these patterns no longer being forcibly excluded by default if you
    have your own exclude patterns specified.

To fix this, add the appropriate patterns to your exclude patterns list.

.. note::

 This item was added in November of 2016, as a result of a bug
 report.

2.6.2


  • Bug Fix packaging error during release process.

2.6.1


  • Bug Update the config files to search for to include setup.cfg and
    tox.ini. This was broken in 2.5.5 when we stopped passing
    config_file to our Style Guide

2.6.0


  • Requirements Change Switch to pycodestyle as all future pep8 releases
    will use that package name
  • Improvement Allow for Windows users on select versions of Python to
    use --jobs and multiprocessing
  • Improvement Update bounds on McCabe
  • Improvement Update bounds on PyFlakes and blacklist known broken
    versions
  • Improvement Handle new PyFlakes warning with a new error code: F405

2.5.5


  • Bug Fix setuptools integration when parsing config files
  • Bug Don't pass the user's config path as the config_file when creating a
    StyleGuide

2.5.4


  • Bug Missed an attribute rename during the v2.5.3 release.

2.5.3


  • Bug Actually parse output_file and enable_extensions from config
    files

2.5.2


  • Bug Parse output_file and enable_extensions from config files
  • Improvement Raise upper bound on mccabe plugin to allow for version
    0.4.0

2.5.1


  • Bug Properly look for .flake8 in current working directory
    (GitLab103_)
  • Bug Monkey-patch pep8.stdin_get_value to cache the actual value in
    stdin. This helps plugins relying on the function when run with
    multiprocessing. (GitLab105, GitLab107)

.. _GitLab103: https://gitlab.com/pycqa/flake8/issues/103
.. _GitLab105: https://gitlab.com/pycqa/flake8/issues/105
.. _GitLab107: https://gitlab.com/pycqa/flake8/issues/107

2.5.0


  • Improvement Raise cap on PyFlakes for Python 3.5 support
  • Improvement Avoid deprecation warnings when loading extensions
    (GitLab59, GitLab90)
  • Improvement Separate logic to enable "off-by-default" extensions
    (GitLab67_)
  • Bug Properly parse options to setuptools Flake8 command (GitLab!41_)
  • Bug Fix exceptions when output on stdout is truncated before Flake8
    finishes writing the output (GitLab69_)
  • Bug Fix error on OS X where Flake8 can no longer acquire or create new
    semaphores (GitLab74_)

.. _GitLab!41: https://gitlab.com/pycqa/flake8/merge_requests/41
.. _GitLab59: https://gitlab.com/pycqa/flake8/issues/59
.. _GitLab67: https://gitlab.com/pycqa/flake8/issues/67
.. _GitLab69: https://gitlab.com/pycqa/flake8/issues/69
.. _GitLab74: https://gitlab.com/pycqa/flake8/issues/74
.. _GitLab90: https://gitlab.com/pycqa/flake8/issues/90

tox 2.1.1 -> 2.9.1

2.9.1


Misc
^^^^

  • integrated new release process and fixed changelog rendering for pypi.org -
    by obestwalter <https://github.com/obestwalter>_.

2.9

2.9.0


Features
^^^^^^^^

  • tox --version now shows information about all registered plugins - by
    obestwalter <https://github.com/obestwalter>_
    (544 <https://github.com/tox-dev/tox/issues/544>_)

Bugfixes
^^^^^^^^

  • skip_install overrides usedevelop (usedevelop is an option to
    choose the installation type if the package is installed and skip_install
    determines if it should be installed at all) - by ferdonline <https://github.com/ferdonline>_
    (571 <https://github.com/tox-dev/tox/issues/571>_)

Misc
^^^^

  • 635 <https://github.com/tox-dev/tox/issues/635>_ inherit from correct exception -
    by obestwalter <https://github.com/obestwalter>_
    (635 <https://github.com/tox-dev/tox/issues/635>_).
  • spelling and escape sequence fixes - by scoop <https://github.com/scoop>_
    (637 <https://github.com/tox-dev/tox/issues/637>_ and
    638 <https://github.com/tox-dev/tox/issues/638>_).
  • add a badge to show build status of documentation on readthedocs.io -
    by obestwalter <https://github.com/obestwalter>_.

Improved Documentation
^^^^^^^^^^^^^^^^^^^^^^

  • add towncrier <https://github.com/hawkowl/towncrier>_ to allow adding
    changelog entries with the pull requests without generating merge conflicts;
    with this release notes are now grouped into four distinct collections:
    Features, Bugfixes, Improved Documentation and Deprecations and Removals. (614 <https://github.com/tox-dev/tox/issues/614>_)

2.8.2


  • 466 <https://github.com/tox-dev/tox/issues/466>_: stop env var leakage if popen failed with resultjson or redirect

2.8.1


  • pull request 599 <https://github.com/tox-dev/tox/pull/599>: fix problems with implementation of 515 <https://github.com/tox-dev/tox/issues/515>.
    Substitutions from other sections were not made anymore if they were not in envlist.
    Thanks to Clark Boylan (cboylan <https://github.com/cboylan>) for helping to get this fixed (pull request 597 <https://github.com/tox-dev/tox/pull/597>).

2.8

..
Everything below here is generated by towncrier <https://pypi.python.org/pypi/towncrier>_.
It is generated once as part of the release process rendering fragments from the changelog
folder. If necessary, the generated text can be edited afterwards to e.g. merge rc changes
into the final release notes.

.. towncrier release notes start

2.8.0


  • 276 <https://github.com/tox-dev/tox/issues/276>: Remove easy_install from docs (TL;DR: use pip). Thanks Martin Andrysík (sifuraz <https://github.com/sifuraz>).
  • 301 <https://github.com/tox-dev/tox/issues/301>: Expand nested substitutions in tox.ini. Thanks vlaci <https://github.com/vlaci>. Thanks to Eli Collins
    (eli-collins <https://github.com/eli-collins>_) for creating a reproducer.
  • 315 <https://github.com/tox-dev/tox/issues/315>: add --help and --version to helptox-quickstart. Thanks vlaci <https://github.com/vlaci>.
  • 326 <https://github.com/tox-dev/tox/issues/326>: Fix OSError 'Not a directory' when creating env on Jython 2.7.0. Thanks Nick Douma (LordGaav <https://github.com/LordGaav>).
  • 429 <https://github.com/tox-dev/tox/issues/429>: Forward MSYSTEM by default on Windows. Thanks Marius Gedminas (mgedmin <https://github.com/mgedmin>) for reporting this.
  • 449 <https://github.com/tox-dev/tox/issues/449>: add multi platform example to the docs. Thanks Aleks Bunin (sashkab <https://github.com/sashkab>) and rndr <https://github.com/rndr>_.
  • 474 <https://github.com/tox-dev/tox/issues/474>_: Start using setuptools_scm for tag based versioning.
  • 484 <https://github.com/tox-dev/tox/issues/484>: Renamed py.test to pytest throughout the project. Thanks Slam (3lnc <https://github.com/3lnc>).
  • 504 <https://github.com/tox-dev/tox/issues/504>: With -a: do not show additional environments header if there are none. Thanks rndr <https://github.com/rndr>.
  • 515 <https://github.com/tox-dev/tox/issues/515>: Don't require environment variables in test environments where they are not used.
    Thanks André Caron (AndreLouisCaron <https://github.com/AndreLouisCaron>
    ).
  • 517 <https://github.com/tox-dev/tox/issues/517>: Forward NUMBER_OF_PROCESSORS by default on Windows to fix multiprocessor.cpu_count().
    Thanks André Caron (AndreLouisCaron <https://github.com/AndreLouisCaron>
    ).
  • 518 <https://github.com/tox-dev/tox/issues/518>: Forward USERPROFILE by default on Windows. Thanks André Caron (AndreLouisCaron <https://github.com/AndreLouisCaron>).
  • pull request 528 <https://github.com/tox-dev/tox/pull/528>: Fix some of the warnings displayed by pytest 3.1.0. Thanks Bruno Oliveira (nicoddemus <https://github.com/nicoddemus>).
  • pull request 547 <https://github.com/tox-dev/tox/pull/547>: Add regression test for 137 <https://github.com/tox-dev/tox/issues/137>. Thanks Martin Andrysík (sifuraz <https://github.com/sifuraz>_).
  • pull request 553 <https://github.com/tox-dev/tox/pull/553>: Add an XFAIL test to reproduce upstream bug 203 <https://github.com/tox-dev/tox/issues/203>. Thanks
    Bartolomé Sánchez Salado (bartsanchez <https://github.com/bartsanchez>_).
  • pull request 556 <https://github.com/tox-dev/tox/pull/556>: Report more meaningful errors on why virtualenv creation failed. Thanks vlaci <https://github.com/vlaci>.
    Also thanks to Igor Sadchenko (igor-sadchenko <https://github.com/igor-sadchenko>_) for pointing out a problem with that PR
    before it hit the masses ☺
  • pull request 575 <https://github.com/tox-dev/tox/pull/575>_: Add announcement doc to end all announcement docs
    (using only CHANGELOG and Github issues since 2.5 already).
  • pull request 580 <https://github.com/tox-dev/tox/pull/580>: Do not ignore Sphinx warnings anymore. Thanks Bernát Gábor (gaborbernat <https://github.com/gaborbernat>).
  • pull request 585 <https://github.com/tox-dev/tox/pull/585>: Expand documentation to explain pass through of flags from deps to pip
    (e.g. -rrequirements.txt, -cconstraints.txt). Thanks Alexander Loechel (loechel <https://github.com/loechel>
    ).
  • pull request 588 <https://github.com/tox-dev/tox/pull/588>_: Run pytest wit xfail_strict and adapt affected tests.

2.7.0


  • pull request 450 <https://github.com/tox-dev/tox/pull/450>: Stop after the first installdeps and first testenv create hooks
    succeed. This changes the default behaviour of tox_testenv_create
    and tox_testenv_install_deps to not execute other registered hooks when
    the first hook returns a result that is not None.
    Thanks Anthony Sottile (asottile <https://github.com/asottile>
    ).
  • 271 <https://github.com/tox-dev/tox/issues/271>_ and 464 <https://github.com/tox-dev/tox/issues/464>_: Improve environment information for users.

New command line parameter: -a show all defined environments -
not just the ones defined in (or generated from) envlist.

New verbosity settings for -l and -a: show user defined descriptions
of the environments. This also works for generated environments from factors
by concatenating factor descriptions into a complete description.

Note that for backwards compatibility with scripts using the output of -l
it's output remains unchanged.

Thanks Bernát Gábor (gaborbernat <https://github.com/gaborbernat>_).

  • 464 <https://github.com/tox-dev/tox/issues/464>: Fix incorrect egg-info location for modified package_dir in setup.py.
    Thanks Selim Belhaouane (selimb <https://github.com/selimb>
    ).
  • 431 <https://github.com/tox-dev/tox/issues/431>: Add 'LANGUAGE' to default passed environment variables.
    Thanks Paweł Adamczak (pawelad <https://github.com/pawelad>
    ).
  • 455 <https://github.com/tox-dev/tox/issues/455>: Add a Vagrantfile with a customized Arch Linux box for local testing.
    Thanks Oliver Bestwalter (obestwalter <https://github.com/obestwalter>
    ).
  • 454 <https://github.com/tox-dev/tox/issues/454>: Revert pull request 407 <https://github.com/tox-dev/tox/pull/407>, empty commands is not treated as an error.
    Thanks Anthony Sottile (asottile <https://github.com/asottile>_).
  • 446 <https://github.com/tox-dev/tox/issues/446>: (infrastructure) Travis CI tests for tox now also run on OS X now.
    Thanks Jason R. Coombs (jaraco <https://github.com/jaraco>
    ).

2.6.0


  • add "alwayscopy" config option to instruct virtualenv to always copy
    files instead of symlinking. Thanks Igor Duarte Cardoso (igordcard <https://github.com/igordcard>_).
  • pass setenv variables to setup.py during a usedevelop install.
    Thanks Eli Collins (eli-collins <https://github.com/eli-collins>_).
  • replace all references to testrun.org with readthedocs ones.
    Thanks Oliver Bestwalter (obestwalter <https://github.com/obestwalter>_).
  • fix 323 <https://github.com/tox-dev/tox/issues/323>_ by avoiding virtualenv14 is not used on py32
    (although we don't officially support py32).
    Thanks Jason R. Coombs (jaraco <https://github.com/jaraco>_).
  • add Python 3.6 to envlist and CI.
    Thanks Andrii Soldatenko (andriisoldatenko <https://github.com/andriisoldatenko>_).
  • fix glob resolution from TOX_TESTENV_PASSENV env variable
    Thanks Allan Feldman (a-feld <https://github.com/a-feld>_).

2.5.0


  • slightly backward incompatible: fix 310 <https://github.com/tox-dev/tox/issues/310>: the {posargs} substitution
    now properly preserves the tox command line positional arguments. Positional
    arguments with spaces are now properly handled.
    NOTE: if your tox invocation previously used extra quoting for positional arguments to
    work around 310 <https://github.com/tox-dev/tox/issues/310>
    , you need to remove the quoting. Example:
    tox -- "'some string'" has to now be written simply as
    tox -- "some string"
    thanks holger krekel. You can set minversion = 2.5.0 in the [tox]
    section of tox.ini to make sure people using your tox.ini use the correct version.
  • fix 359 <https://github.com/tox-dev/tox/issues/359>: add COMSPEC to default passenv on windows. Thanks
    anthrotype <https://github.com/anthrotype>
    .
  • add support for py36 and py37 and add py36-dev and py37(nightly) to
    travis builds of tox. Thanks John Vandenberg.
  • fix 348 <https://github.com/tox-dev/tox/issues/348>: add py2 and py3 as default environments pointing to
    "python2" and "python3" basepython executables. Also fix 347 <https://github.com/tox-dev/tox/issues/347>
    by
    updating the list of default envs in the tox basic example.
    Thanks Tobias McNulty.
  • make "-h" and "--help-ini" options work even if there is no tox.ini,
    thanks holger krekel.
  • add {:} substitution, which is replaced with os-specific path
    separator, thanks Lukasz Rogalski.
  • fix 305 <https://github.com/tox-dev/tox/issues/305>_: downloadcache test env config is now ignored as pip-8
    does caching by default. Thanks holger krekel.
  • output from install command in verbose (-vv) mode is now printed to console instead of
    being redirected to file, thanks Lukasz Rogalski
  • fix 399 <https://github.com/tox-dev/tox/issues/399>_. Make sure {envtmpdir} is created if it doesn't exist at the
    start of a testenvironment run. Thanks Manuel Jacob.
  • fix 316 <https://github.com/tox-dev/tox/issues/316>_: Lack of commands key in ini file is now treated as an error.
    Reported virtualenv status is 'nothing to do' instead of 'commands
    succeeded', with relevant error message displayed. Thanks Lukasz Rogalski.

2.4.1


  • fix 380 <https://github.com/tox-dev/tox/issues/380>_: properly perform substitution again. Thanks Ian
    Cordasco.

2.4.0


  • remove PYTHONPATH from environment during the install phase because a
    tox-run should not have hidden dependencies and the test commands will also
    not see a PYTHONPATH. If this causes unforeseen problems it may be
    reverted in a bugfix release. Thanks Jason R. Coombs.
  • fix 352 <https://github.com/tox-dev/tox/issues/352>_: prevent a configuration where envdir==toxinidir and
    refine docs to warn people about changing "envdir". Thanks Oliver Bestwalter and holger krekel.
  • fix 375 <https://github.com/tox-dev/tox/issues/375>, fix 330 <https://github.com/tox-dev/tox/issues/330>: warn against tox-setup.py integration as
    "setup.py test" should really just test with the current interpreter. Thanks Ronny Pfannschmidt.
  • fix 302 <https://github.com/tox-dev/tox/issues/302>_: allow cross-testenv substitution where we substitute
    with {x,y} generative syntax. Thanks Andrew Pashkin.
  • fix 212 <https://github.com/tox-dev/tox/issues/212>_: allow escaping curly brace chars "{" and "}" if you need the
    chars "{" and "}" to appear in your commands or other ini values.
    Thanks John Vandenberg.
  • addresses 66 <https://github.com/tox-dev/tox/issues/66>_: add --workdir option to override where tox stores its ".tox" directory
    and all of the virtualenv environment. Thanks Danring.
  • introduce per-venv list_dependencies_command which defaults
    to "pip freeze" to obtain the list of installed packages.
    Thanks Ted Shaw, Holger Krekel.
  • close 66 <https://github.com/tox-dev/tox/issues/66>_: add documentation to jenkins page on how to avoid
    "too long shebang" lines when calling pip from tox. Note that we
    can not use "python -m pip install X" by default because the latter
    adds the CWD and pip will think X is installed if it is there.
    "pip install X" does not do that.
  • new list_dependencies_command to influence how tox determines
    which dependencies are installed in a testenv.
  • (experimental) New feature: When a search for a config file fails, tox tries loading
    setup.cfg with a section prefix of "tox".
  • fix 275 <https://github.com/tox-dev/tox/issues/275>_: Introduce hooks tox_runtest_pre``` and tox_runtest_post`` which run before and after the tests of a venv,
    respectively. Thanks to Matthew Schinckel and itxaka serrano.
  • fix 317 <https://github.com/tox-dev/tox/issues/317>_: evaluate minversion before tox config is parsed completely.
    Thanks Sachi King for the PR.
  • added the "extras" environment option to specify the extras to use when doing the
    sdist or develop install. Contributed by Alex Grönholm.
  • use pytest-catchlog instead of pytest-capturelog (latter is not
    maintained, uses deprecated pytest API)

2.3.2


  • fix 314 <https://github.com/tox-dev/tox/issues/314>_: fix command invocation with .py scripts on windows.
  • fix 279 <https://github.com/tox-dev/tox/issues/279>_: allow cross-section substitution when the value contains
    posargs. Thanks Sachi King for the PR.

2.3.1


  • fix 294 <https://github.com/tox-dev/tox/issues/294>_: re-allow cross-section substitution for setenv.

2.3.0


  • DEPRECATE use of "indexservers" in tox.ini. It complicates
    the internal code and it is recommended to rather use the
    devpi system for managing indexes for pip.
  • fix 285 <https://github.com/tox-dev/tox/issues/285>_: make setenv processing fully lazy to fix regressions
    of tox-2.2.X and so that we can now have testenv attributes like
    "basepython" depend on environment variables that are set in
    a setenv section. Thanks Nelfin for some tests and initial
    work on a PR.
  • allow "" in commands. This is slightly incompatible with commands
    sections that used a comment after a "" line continuation.
    Thanks David Stanek for the PR.
  • fix 289 <https://github.com/tox-dev/tox/issues/289>_: fix build_sphinx target, thanks Barry Warsaw.
  • fix 252 <https://github.com/tox-dev/tox/issues/252>_: allow environment names with special characters.
    Thanks Julien Castets for initial PR and patience.
  • introduce experimental tox_testenv_create(venv, action) and
    tox_testenv_install_deps(venv, action) hooks to allow
    plugins to do additional work on creation or installing
    deps. These hooks are experimental mainly because of
    the involved "venv" and session objects whose current public
    API is not fully guranteed.
  • internal: push some optional object creation into tests because
    tox core doesn't need it.

2.2.1


  • fix bug where {envdir} substitution could not be used in setenv
    if that env value is then used in {basepython}. Thanks Florian Bruhin.

2.2.0


  • fix 265 <https://github.com/tox-dev/tox/issues/265>_ and add LD_LIBRARY_PATH to passenv on linux by default
    because otherwise the python interpreter might not start up in
    certain configurations (redhat software collections). Thanks David Riddle.
  • fix 246 <https://github.com/tox-dev/tox/issues/246>_: fix regression in config parsing by reordering
    such that {envbindir} can be used again in tox.ini. Thanks Olli Walsh.
  • fix 99 <https://github.com/tox-dev/tox/issues/99>_: the {env:...} substitution now properly uses environment
    settings from the setenv section. Thanks Itxaka Serrano.
  • fix 281 <https://github.com/tox-dev/tox/issues/281>_: make --force-dep work when urls are present in
    dependency configs. Thanks Glyph Lefkowitz for reporting.
  • fix 174 <https://github.com/tox-dev/tox/issues/174>_: add new ignore_outcome testenv attribute which
    can be set to True in which case it will produce a warning instead
    of an error on a failed testenv command outcome.
    Thanks Rebecka Gulliksson for the PR.
  • fix 280 <https://github.com/tox-dev/tox/issues/280>_: properly skip missing interpreter if
    {envsitepackagesdir} is present in commands. Thanks BB:ceridwenv

coverage 4.0 -> 4.4.1

4.4.1


  • No code changes: just corrected packaging for Python 2.7 Linux wheels.

.. _changes_44:

4.4


  • Reports could produce the wrong file names for packages, reporting pkg.py
    instead of the correct pkg/__init__.py. This is now fixed. Thanks, Dirk
    Thomas.
  • XML reports could produce <source> and <class> lines that together
    didn't specify a valid source file path. This is now fixed. (issue 526_)
  • Namespace packages are no longer warned as having no code. (issue 572_)
  • Code that uses sys.settrace(sys.gettrace()) in a file that wasn't being
    coverage-measured would prevent correct coverage measurement in following
    code. An example of this was running doctests programmatically. This is now
    fixed. (issue 575_)
  • Errors printed by the coverage command now go to stderr instead of
    stdout.
  • Running coverage xml in a directory named with non-ASCII characters would
    fail under Python 2. This is now fixed. (issue 573_)

.. _issue 526: https://bitbucket.org/ned/coveragepy/issues/526/generated-xml-invalid-paths-for-cobertura
.. _issue 572: https://bitbucket.org/ned/coveragepy/issues/572/no-python-source-warning-for-namespace
.. _issue 573: https://bitbucket.org/ned/coveragepy/issues/573/cant-generate-xml-report-if-some-source
.. _issue 575: https://bitbucket.org/ned/coveragepy/issues/575/running-doctest-prevents-complete-coverage

4.4b1


  • Some warnings can now be individually disabled. Warnings that can be
    disabled have a short name appended. The [run] disable_warnings setting
    takes a list of these warning names to disable. Closes both issue 96_ and
    issue 355_.
  • The XML report now includes attributes from version 4 of the Cobertura XML
    format, fixing issue 570_.
  • In previous versions, calling a method that used collected data would prevent
    further collection. For example, save(), report(), html_report(), and
    others would all stop collection. An explicit start() was needed to get it
    going again. This is no longer true. Now you can use the collected data and
    also continue measurement. Both issue 79_ and issue 448_ described this
    problem, and have been fixed.
  • Plugins can now find unexecuted files if they choose, by implementing the
    find_executable_files method. Thanks, Emil Madsen.
  • Minimal IronPython support. You should be able to run IronPython programs
    under coverage run, though you will still have to do the reporting phase
    with CPython.
  • Coverage.py has long had a special hack to support CPython's need to measure
    the coverage of the standard library tests. This code was not installed by
    kitted versions of coverage.py. Now it is.

.. _issue 79: https://bitbucket.org/ned/coveragepy/issues/79/save-prevents-harvesting-on-stop
.. _issue 96: https://bitbucket.org/ned/coveragepy/issues/96/unhelpful-warnings-produced-when-using
.. _issue 355: https://bitbucket.org/ned/coveragepy/issues/355/warnings-should-be-suppressable
.. _issue 448: https://bitbucket.org/ned/coveragepy/issues/448/save-and-html_report-prevent-further
.. _issue 570: https://bitbucket.org/ned/coveragepy/issues/570/cobertura-coverage-04dtd-support

.. _changes_434:

4.3.4


  • Fixing 2.6 in version 4.3.3 broke other things, because the too-tricky
    exception wasn't properly derived from Exception, described in issue 556_.
    A newb mistake; it hasn't been a good few days.

.. _issue 556: https://bitbucket.org/ned/coveragepy/issues/556/43-fails-if-there-are-html-files-in-the

.. _changes_433:

4.3.3


  • Python 2.6 support was broken due to a testing exception imported for the
    benefit of the coverage.py test suite. Properly conditionalizing it fixed
    issue 554_ so that Python 2.6 works again.

.. _issue 554: https://bitbucket.org/ned/coveragepy/issues/554/traceback-on-python-26-starting-with-432

.. _changes_432:

4.3.2


  • Using the --skip-covered option on an HTML report with 100% coverage
    would cause a "No data to report" error, as reported in issue 549_. This is
    now fixed; thanks, Loïc Dachary.
  • If-statements can be optimized away during compilation, for example, if 0:
    or if __debug__:. Coverage.py had problems properly understanding these
    statements which existed in the source, but not in the compiled bytecode.
    This problem, reported in issue 522_, is now fixed.
  • If you specified --source as a directory, then coverage.py would look for
    importable Python files in that directory, and could identify ones that had
    never been executed at all. But if you specified it as a package name, that
    detection wasn't performed. Now it is, closing issue 426_. Thanks to Loïc
    Dachary for the fix.
  • If you started and stopped coverage measurement thousands of times in your
    process, you could crash Python with a "Fatal Python error: deallocating
    None" error. This is now fixed. Thanks to Alex Groce for the bug report.
  • On PyPy, measuring coverage in subprocesses could produce a warning: "Trace
    function changed, measurement is likely wrong: None". This was spurious, and
    has been suppressed.
  • Previously, coverage.py couldn't start on Jython, due to that implementation
    missing the multiprocessing module (issue 551). This problem has now been
    fixed. Also, issue 322
    about not being able to invoke coverage
    conveniently, seems much better: jython -m coverage run myprog.py works
    properly.
  • Let's say you ran the HTML report over and over again in the same output
    directory, with --skip-covered. And imagine due to your heroic
    test-writing efforts, a file just acheived the goal of 100% coverage. With
    coverage.py 4.3, the old HTML file with the less-than-100% coverage would be
    left behind. This file is now properly deleted.

.. _issue 322: https://bitbucket.org/ned/coveragepy/issues/322/cannot-use-coverage-with-jython
.. issue 426: https://bitbucket.org/ned/coveragepy/issues/426/difference-between-coverage-results-with
.. issue 522: https://bitbucket.org/ned/coveragepy/issues/522/incorrect-branch-reporting-with-__debug

.. _issue 549: https://bitbucket.org/ned/coveragepy/issues/549/skip-covered-with-100-coverage-throws-a-no
.. _issue 551: https://bitbucket.org/ned/coveragepy/issues/551/coveragepy-cannot-be-imported-in-jython27

.. _changes_431:

4.3.1


  • Some environments couldn't install 4.3, as described in issue 540_. This is
    now fixed.
  • The check for conflicting --source and --include was too simple in a
    few different ways, breaking a few perfectly reasonable use cases, described
    in issue 541. The check has been reverted while we re-think the fix for
    issue 265
    .

.. _issue 540: https://bitbucket.org/ned/coveragepy/issues/540/cant-install-coverage-v43-into-under
.. _issue 541: https://bitbucket.org/ned/coveragepy/issues/541/coverage-43-breaks-nosetest-with-coverage

.. _changes_43:

4.3


Special thanks to Loïc Dachary, who took an extraordinary interest in
coverage.py and contributed a number of improvements in this release.

  • Subprocesses that are measured with automatic subprocess measurement_ used
    to read in any pre-existing data file. This meant data would be incorrectly
    carried forward from run to run. Now those files are not read, so each
    subprocess only writes its own data. Fixes issue 510_.
  • The coverage combine command will now fail if there are no data files to
    combine. The combine changes in 4.2 meant that multiple combines could lose
    data, leaving you with an empty .coverage data file. Fixes
    issue 525, issue 412, issue 516, and probably issue 511.
  • Coverage.py wouldn't execute sys.excepthook_ when an exception happened in
    your program. Now it does, thanks to Andrew Hoos. Closes issue 535_.
  • Branch coverage fixes:
  • Branch coverage could misunderstand a finally clause on a try block that
    never continued on to the following statement, as described in issue 493_. This is now fixed. Thanks to Joe Doherty for the report and Loïc
    Dachary for the fix.
  • A while loop with a constant condition (while True) and a continue
    statement would be mis-analyzed, as described in issue 496_. This is now
    fixed, thanks to a bug report by Eli Skeggs and a fix by Loïc Dachary.
  • While loops with constant conditions that were never executed could result
    in a non-zero coverage report. Artem Dayneko reported this in issue 502_, and Loïc Dachary provided the fix.
  • The HTML report now supports a --skip-covered option like the other
    reporting commands. Thanks, Loïc Dachary for the implementation, closing
    issue 433_.
  • Options can now be read from a tox.ini file, if any. Like setup.cfg, sections
    are prefixed with "coverage:", so [run] options will be read from the
    [coverage:run] section of tox.ini. Implements part of issue 519_.
    Thanks, Stephen Finucane.
  • Specifying both --source and --include no longer silently ignores the
    include setting, instead it fails with a message. Thanks, Nathan Land and
    Loïc Dachary. Closes issue 265_.
  • The Coverage.combine method has a new parameter, strict=False, to
    support failing if there are no data files to combine.
  • When forking subprocesses, the coverage data files would have the same random
    number appended to the file name. This didn't cause problems, because the
    file names had the process id also, making collisions (nearly) impossible.
    But it was disconcerting. This is now fixed.
  • The text report now properly sizes headers when skipping some files, fixing
    issue 524_. Thanks, Anthony Sottile and Loïc Dachary.
  • Coverage.py can now search .pex files for source, just as it can .zip and
    .egg. Thanks, Peter Ebden.
  • Data files are now about 15% smaller.
  • Improvements in the [run] debug setting:
  • The "dataio" debug setting now also logs when data files are deleted during
    combining or erasing.
  • A new debug option, "multiproc", for logging the behavior of
    concurrency=multiprocessing.
  • If you used the debug options "config" and "callers" together, you'd get a
    call stack printed for every line in the multi-line config output. This is
    now fixed.
  • Fixed an unusual bug involving multiple coding declarations affecting code
    containing code in multi-line strings: issue 529_.
  • Coverage.py will no longer be misled into thinking that a plain file is a
    package when interpreting --source options. Thanks, Cosimo Lupo.
  • If you try to run a non-Python file with coverage.py, you will now get a more
    useful error message. Issue 514_.
  • The default pragma regex changed slightly, but this will only matter to you
    if you are deranged and use mixed-case pragmas.
  • Deal properly with non-ASCII file names in an ASCII-only world, issue 533_.
  • Programs that set Unicode configuration values could cause UnicodeErrors when
    generating HTML reports. Pytest-cov is one example. This is now fixed.
  • Prevented deprecation warnings from configparser that happened in some
    circumstances, closing issue 530_.
  • Corrected the name of the jquery.ba-throttle-debounce.js library. Thanks,
    Ben Finney. Closes issue 505_.
  • Testing against PyPy 5.6 and PyPy3 5.5.
  • Switched

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant